home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_06_05
/
v6n5070a.txt
< prev
next >
Wrap
Text File
|
1989-09-26
|
3KB
|
68 lines
name set_env
COMMENT;------------------------------------------------------
Purpose: to write directly to the original environment using
undocumented interrupt number 2Eh - For command line usage:
set_env string_name Revised/Reassembled Under MASM v.5.0 03/02/88
- Ron Schroeder First assemble, link and then use EXE2BIN to
convert to .com file
;-----------------------------
code_seg segment
assume cs:code_seg, ds:code_seg,es:code_seg,ds:code_seg
org 100h ; com file format
main proc near
jmp short START ;skip over data area
;----------------------------------------------------------------
set db ODh ; chars in `SET STRING=` (11)
db 'SET STRING=' ;environmental literal
setting db 20h dup(0) ;arbitrary size envp buffer
;----------------------------------------------------------------
START: mov ah,4Ah ; first modify memory location
mov bx,offset FREE ; make room for command.com
dec bx
mov cl,o4h
shr bx,cl
inc bx
int 21h ; do it
xor ch,ch ; zero out ch (defensive move
mov si,0080h ; get command line length
mov cl,byte ptr[si]; put it in cl
dec cl ; adjust it
jcxz ERROR1 ; error if no command line
add set,cl ; add cmd line size to literal
mov si,0082h ; beginning of command line
mov di,offset setting ; destination
rep movsb ; put all in setting for length
; in cx
xor bh,bh ; zero out bh (defensive move)
mov bl,set ; 'new' length of env string
mov set[bx][1],0Dh ;0Dh is cr at end of string
mov si,offset set
int 2Eh ; write ds:si to original environment
xor al,al ; zero out al for zero error code ret
EXIT: mov ah,4Ch ; quit
int 21h
ERROR1: mov al,01h ; if no characters entered
jmp short EXIT ; then error
FREE label byte ; to determine memory
; allocation for this program
main endp ; end of procedure
;----------------------------------------------------------------
code_seg ends
end main